<?php
// 版权所有 (C) 2025 尋鯨錄
// 保留所有权利。
// 博客：https://www.xunjinlu.fun/
// 如需二开请保留版权，谢谢。

// 引入认证配置
require_once 'config.php';

// 检查用户权限
if (!isUserLoggedIn()) {
    header('Content-Type: application/json');
    echo json_encode(array('success' => false, 'error' => '需要登录才能上传图片'));
    exit();
}

// 设置允许的图片类型
$allowed_types = array(
    'image/jpeg',
    'image/png',
    'image/gif',
    'image/bmp',
    'image/webp',
    'image/tiff',
    'image/svg+xml'
);

// 检查img目录
if (!file_exists('img')) {
    mkdir('img', 0777, true);
}

// 检查计数器文件
if (!file_exists('counter.txt')) {
    file_put_contents('counter.txt', '1');
}

if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_FILES["image"])) {
    $uploaded_files = [];
    $errors = [];
    
    // 处理多文件上传
    foreach ($_FILES["image"]["tmp_name"] as $key => $tmp_name) {
        $file_type = $_FILES["image"]["type"][$key];
        $file_name = $_FILES["image"]["name"][$key];
        
        // 检查文件类型
        if (!in_array($file_type, $allowed_types)) {
            $errors[] = "文件 {$file_name} 类型不支持";
            continue;
        }

        // 获取文件扩展名
        $extension = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
        
        // 读取当前计数器值
        $counter = intval(file_get_contents('counter.txt'));
        
        // 生成新文件名并确保不重复
        do {
             $new_filename = $counter . '.' . $extension;
             $full_path = "img/" . $new_filename;
             $counter++;
            } while (file_exists($full_path));
        
        // 更新计数器值
        file_put_contents('counter.txt', $counter);
        
        // 移动上传的文件
        if (move_uploaded_file($tmp_name, $full_path)) {
            $image_url = 'http://' . $_SERVER['HTTP_HOST'] . 
                        dirname($_SERVER['REQUEST_URI']) . 
                        'img/' . $new_filename;
            $uploaded_files[] = $image_url;
        } else {
            $errors[] = "文件 {$file_name} 上传失败";
        }
    }
    
    // 返回JSON响应
    header('Content-Type: application/json');
    if (count($uploaded_files) > 0) {
        // 如果只上传了一个文件，保持原有的响应格式
        if (count($uploaded_files) === 1) {
            echo json_encode(['success' => true, 'url' => $uploaded_files[0]]);
        } else {
            // 多个文件时，返回第一个文件的URL作为主URL
            echo json_encode(['success' => true, 'url' => $uploaded_files[0]]);
        }
    } else {
        echo json_encode(['success' => false, 'error' => implode("\n", $errors)]);
    }
    exit();
}
?> 